import java.lang.instrument.Instrumentation;


/**
 *  FIXME  Java Agent的agentmain和premain方式
 *  https://my.oschina.net/u/3484671/blog/3194780
 *
 *  总结：
 *   ①、agentmain方式： 该功能多用于收集系统信息，以及在系统加载后对class文件重新编辑等功能。
 *
 *   ②、premain方式 ：在应用加载前执行，通常用于加载重新编辑类
 *
 */

/***
 * FIXME  重要知识点：Java-Instrument 与 ClassFileTransformer   参考 https://www.cnblogs.com/jhxxb/p/11570503.html

 */
public class App1AgentMain {

    public static void  agentmain(String agentArgs, Instrumentation inst){
        System.out.println("App1AgentMain----打印全部加载的类.....");
        Class[] allLoadedClasses = inst.getAllLoadedClasses();
        for (Class allLoadedClass : allLoadedClasses) {
            System.out.println(allLoadedClass.getName());
        }
        System.out.println("App1AgentMain----打印全部加载的类完成");
    }
}
